package 数组; // 定义包名
import java.util.*; // 导入java.util包

public class addStrings { // 定义类，用于字符串加法
    public String addString(String num1, String num2){ // 方法用于将两个字符串表示的整数相加
        char[] c1 = num1.toCharArray(); // 将第一个字符串转换为字符数组
        char[] c2 = num2.toCharArray(); // 将第二个字符串转换为字符数组
        int i = c1.length - 1; // 初始化第一个字符数组的索引
        int j = c2.length - 1; // 初始化第二个字符数组的索引
        int carry = 0; // 初始化进位
        StringBuilder res = new StringBuilder(""); // 创建一个StringBuilder用于存储结果
        while(i >= 0 || j >= 0){ // 当两个字符数组的索引都大于等于0时，继续循环
            int x = i < 0 ? 0 : c1[i] - '0'; // 获取第一个字符数组的当前字符，如果索引小于0，则为0
            int y = j < 0 ? 0 : c2[j] - '0'; // 获取第二个字符数组的当前字符，如果索引小于0，则为0
            int num = x + y + carry; // 计算当前位的和
            carry = num / 10; // 更新进位
            res.append(num % 10); // 将当前位的和添加到结果中
            i--; // 索引递减
            j--; // 索引递减
        }
        if(carry == 1) res.append(1); // 如果最后还有进位，添加到结果中
        return res.reverse().toString(); // 返回反转后的结果字符串
    }

    public static void main(String[] args) { // 主方法，程序的入口
        Scanner sc = new Scanner(System.in); // 创建扫描器对象
        String num1 = sc.nextLine(); // 读取第一个字符串
        String num2 = sc.nextLine(); // 读取第二个字符串
        addStrings as = new addStrings(); // 创建对象
        System.out.println(as.addString(num1, num2)); // 输出结果
        sc.close(); // 关闭扫描器
    }
}
